Acceleo 2 queries [deprecated]

Basic Model Queries

DescriptionWorkbench SelectionSyntax
Current Element Model Element<% current %>
Container of current elementA model element <% current.eContainer %>
Type of an elementA model element<% current.eClass %>
Total number of elements in a modelA model element<% current.ancestor.nLast.eAllContents.nSize %>
Total number of sub-elementsA model element<% current.eAllContents.nSize %>


Diagram Queries

DescriptionWorkbench SelectionSyntax
Semantic element associated to a graphical elementA diagram / A diagram element<% current.target %>
aird file (non fragmented model)A diagram<% ((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize()) %>
All aird files (fragmented model)A diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]) %>
All diagramsA diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors %>
Number of diagramsA diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors.nSize() %>
All diagrams from kind "Logical Data Flow"A diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors[description.name.startsWith("Logical Data Flow Blank")]%>
All diagrams except kind "Scenario"A diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors[description.name.endsWith("Scenario")==false] %>
List of different viewpointsA diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.viewpoint.nMinimize() %>
Number of graphical elements in all diagramsA diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors.representation.diagramElements.nSize() %>
Number of graphical elements in all diagrams (including technical elements like style, color…)A diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors.representation.eAllContents.nSize() %>

Searching Strings

DescriptionWorkbench SelectionSyntax
All element containing the "TODO" string in their 'Name' propertyA model element<% current.eAllContents()[name.matches(".*TODO.*")] %>
All element containing the "TODO" string in their 'Summary' propertyA model element<% current.eAllContents()[summary.matches(".*TODO.*")] %>
All element containing the "TODO" string in their 'Description' propertyA model element<% current.eAllContents()[description.matches(".*TODO.*")] %>
All diagrams containing a note containing the "TODO" stringA diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors.representation[~element.filter("notation.Diagram").eAllContents("notation.Node")[type=="Note" && description.indexOf("TODO")>=0]] %>
Number of diagrams containing a note containing the "TODO" stringA diagram<% (((current+current.~).ancestor[eClass.name=="DAnalysis"].nMinimize().put("aird") + (get("aird")+get("aird").~+get("aird").~.~+get("aird").~.~).put("airds") + get("airds")+get("airds").referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis+get("airds").referencedAnalysis.referencedAnalysis.referencedAnalysis).nMinimize()[eClass.name=="DAnalysis"]).ownedViews.ownedRepresentationDescriptors.representation[~element.filter("notation.Diagram").eAllContents("notation.Node")[type=="Note" && description.indexOf("TODO")>=0]].nSize() %>

Requirements

DescriptionWorkbench SelectionSyntax
Query to retrieve the list of non-allocated requirementsRequirement Package<% current.eAllContents[relatedCapellaElements==null] %>

Model Navigation Examples

DescriptionWorkbench SelectionSyntax
List of functions allocated to a componentAny Component<% current.allocatedFunctions %>
List of sub logical componentsAny Logical Component<% current.subLogicalComponents %>
List of all functions

- having more than 3 ports - allocated to one given component - Which name starts with "Store"

Any Component<% current.allocatedFunctions[name.startsWith("Store") && eAllContents().filter("FunctionPort").nSize>3] %>

Metrics

DescriptionWorkbench SelectionSyntax
Number of XXXX owned by the selected element, where XXXX is the type of a model element (<% current.eClass %> )A model element<% current.eAllContents("XXXX").nSize() %>
Number of Operational ActivitiesOperationalAnalysis<% current.eAllContents("OperationalActivity").nSize() %>
Number of Operational InteractionsOperationalAnalysis<% current.eAllContents("FunctionalExchange").nSize() %>
Number of Exchange Items in OAOperationalAnalysis<% current.eAllContents("AbstractExchangeItem").nSize() %>
Number of Types (Classes, Datatypes) in OAOperationalAnalysis<% current.eAllContents("DataType").nSize() %>
Number of Classes in OAOperationalAnalysis

<% current.eAllContents("Class").nSize() %>

Number of States or Modes in OAOperationalAnalysis<% (current.eAllContents().filter("State") - current.eAllContents().filter("Mode")).nSize() %>
Number of Operational EntitiesOperationalAnalysis<% (current.eAllContents("Entity")-current.eAllContents("OperationalActor")).nSize() %>
Number of Operational ActorsOperationalAnalysis<% current.eAllContents("OperationalActor").nSize() %>
Number of Operational RolesOperationalAnalysis<% current.eAllContents("Role").nSize() %>
Number of Communication MeansOperationalAnalysis<% current.eAllContents("CommunicationMean").nSize() %>
Number of System FunctionsSystemAnalysis<% current.eAllContents("SystemFunction").nSize() %>
Number of Functional Exchanges in SASystemAnalysis<% current.eAllContents("FunctionalExchange").nSize() %>
Number of Function Ports in SASystemAnalysis<% current.eAllContents().filter("FunctionPort").nSize %>
Number of System ActorsSystemAnalysis<% current.eAllContents("Actor").nSize() %>
Number of Functional Chains in SASystemAnalysis<% current.eAllContents("FunctionalChain").nSize() %>
Number of Scenarios in SASystemAnalysis<% current.eAllContents("Scenario").nSize() %>
Number of Behaviour Components in PAPhysicalArchitecture<% current.eAllContents("PhysicalComponent")[nature=="BEHAVIOR"].nSize %>
Number of Implementation PC (nodes) in PAPhysicalArchitecture<% current.eAllContents("PhysicalComponent")[nature=="NODE"].nSize %>
Number of Physical LinksPhysicalArchitecture<% current.eAllContents("PhysicalLink").nSize() %>
Number of Physical PortsPhysicalArchitecture<% current.eAllContents("PhysicalPort").nSize() %>

Advanced Queries

With Acceleo, you can navigate in elements following references and attributes: <%current.outgoing%> on a SystemFunction will retrieve outgoing functional exchanges:



There is many way to retrieve which references to use for an element. These references ca be used in a request like the above outgoing reference. For instance, you can retrieve references with Acceleo using the following request: <%current.eClass.eAllReferences%> (or current.eClass.eAllAttributes to retrieve attributes)



One easiest way to retrieve references or attributes is to open the Properties View and go the Expert tab then choose relevant references/attributes for your query



You just have to write the reference name in a camelCaseFormat to use it with Acceleo (e.g. Available In States => availableInStates)